Penyelesaian Integral Menggunakan Metode Romberg¶
Metode Romberg¶
Metode integrasi Romberg didasarkan pada perlusaan ekstrapolasi Richardson untuk memperoleh nilai integrasi yang semakin baik. Sebagai catatan, setiap penerapan ekstrapolasi Richardson akan menaikkan order galat pada hasil solusinya sebesar dua. $$ O(h^{2N}) \rightarrow O(h^{2N+2}) $$ Misalnya,bila $ I(h) $ dan $ I(2h) $ dihitung dengan kaidah trapesium yang berorde galat $ O(h 2) $, maka ekstrapolasi Richardson menghaslkan kaidah Simpson ⅓ yang berorde $ O(h 4) $. Selanjutnya, bila $ I(h) $ dan $ I(2h) $ dihitung dengan kaidah Simpson ⅓, ekstrapolasi Richardson menghaslkan kaidah Boole yang berorde $ O(h 6) $
Dalam hal ini $$ h = {b -a \over n} $$ Dan
$ A_k $ = Perkiraan nilai integrasi dengan kaidah trapesium dan jumlah pias $ n= 2^k $ Orde galat A_k adalah $ O(h^2) $
Sebagai contoh, interval [a,b] dibagi menjadi 64 buah pias/upselang. $$ n=64= 2^6 \rightarrow k = (0,1,2,3,4,5,6) $$ k = 0 adalah $ n =2^0 =1$ pias, $h_0 = {b-a \over 1} \rightarrow A_0 = h_0/2 [f_0 + f_64] $
k = 1 adalah $ n =2^1 =2$ pias, $h_1 = {b-a \over 2} \rightarrow A_0 = h_½ [f_0 + f_32 + f_64] $
dan seterusnya...
Arti dari setiap $ A_k $ adalah
A_0 adalah taksiran nilai integrasi $ I = \int_a^b f(x)dx $ dengan menggunakan kaidah trapesium dengan pembagian daerah integrasi n=2^0=1 buah pias.
A_1 adalah taksiran nilai integrasi $ I = \int_a^b f(x)dx $ dengan menggunakan kaidah trapesium dengan pembagian daerah integrasi n=2^1=2 buah pias.
A_2 adalah taksiran nilai integrasi $ I = \int_a^b f(x)dx $ dengan menggunakan kaidah trapesium dengan pembagian daerah integrasi n=2^2=4 buah pias. dan begitu seterusnya.
Untuk mendapatkan nilai B_k kita dapat menggunakan persamaan ekstrapolasi Richardson dengan memanfaatkan $ A_0, A_1, ... A_k$ yang didapatkan. $$ B_k = A_k + {A_k-A_{k-1} \over 2^2 - 1} $$ Dan begitu seterusnya untuk mendapatkan nilai $ C_k, D_k, E_k ... $. Sehingga kita dapat menghasilkan nilai yang dapat ditransformasikan pada bentuk tabel yang dinamakan Tabel Romberg.
$ O(h^2) $ | $ O(h^4) $ | $ O(h^6) $ | $ O(h^8) $ | $ O(h^10) $ |
---|---|---|---|---|
A_0 | ||||
A_1 | B_1 | |||
A_2 | B_2 | C_2 | ||
A_3 | B_3 | C_3 | D_3 | |
A_4 | B_4 | C_4 | D_4 | E_4 |
Dan E_4 merupakan nilai integrasi yang terbaik.
Menghitung Integral dengan Metode Romberg¶
Misalkan terdapat integral $$ \int_0^1 {1 \over 1+ x} dx $$ $ n =8, \ a=0, b=1 $
$ x_r = {b - a \over n} $
$ f_r $ = fungsi integral tersebut.
Tabel titik-titik dalam selang interval [a,b]
$ r $ | x_r | f_r |
---|---|---|
0 | 0 | 1,00000 |
1 | 0,125 | 0,88889 |
2 | 0,250 | 0,80000 |
3 | 0,375 | 0,72727 |
4 | 0,500 | 0,66667 |
5 | 0,625 | 0,61538 |
6 | 0,750 | 0,57143 |
7 | 0,875 | 0,53333 |
8 | 1,000 | 0,50000 |
Setelah menyelesaikan proses perhitungan kemudian didapatkan nilai yang ditampung pada tabel Romberg berikut.
k | O(h^2) | O(h^2) | O(h^4) | O(h^6) |
---|---|---|---|---|
0 | 0.75000 | |||
1 | 0.70833 | 0.69445 | ||
2 | 0.69702 | 0.69325 | 0.69317 | |
3 | 0.69412 | 0.69315 | 0.69314 | 0.69314 |
Jadi hasil dari $ \int_0^1 {1 \over 1+ x} dx \approx 0.69314 $
Implementasi Metode Romberg dengan Python¶
from numpy import zeros def trapezoid_recursive(f, a, b, n): h = (b - a) / n x = a In = f(a) for k in range(1, n): x = x + h In += 2*f(x) return (In + f(b))*h*0.5 def romberg(f, a, b, n): R = zeros((n, n)) print('Tabel Romberg') for k in range(0, n): R[k, 0] = trapezoid_recursive(f, a, b, 2**k) for j in range(0, k): R[k, j+1] = (4**(j+1) * R[k, j] - R[k-1, j]) / (4**(j+1) - 1) print(R[k, 0:k+1]) return R print(' 1/') print(' / 1/(1+x)') print('/0\n') a = 0 b = 1 n = 4 def f(x): return 1/(1+x) hasil = romberg(f, a, b, n)[n-1, n-1] print('hasil penyelesaian :', round(hasil,5))
def trapezoid_recursive(f, a, b, n): h = (b - a) / n x = a In = f(a) for k in range(1, n): x = x + h In += 2*f(x) return (In + f(b))*h*0.5
def romberg(f, a, b, n): R = zeros((n, n)) print('Tabel Romberg') for k in range(0, n): R[k, 0] = trapezoid_recursive(f, a, b, 2**k) for j in range(0, k): R[k, j+1] = (4**(j+1) * R[k, j] - R[k-1, j]) / (4**(j+1) - 1) print(R[k, 0:k+1]) return R
Semua nilai dari proses perhitugan program diatas kemudia dimassukan ke dalam larik yang merupakan bantuan dari libarary numpy. Program tersebut di jalankan dengan melakukan proses penyelesaian integrasi pada integral $ \int_0^1 {1 \over 1+ x} dx $. Saat program tersebut dijalankan maka menghasilkan output seperti berikut.
1/ / 1/(1+x) /0 Tabel Romberg [0.75] [0.70833333 0.69444444] [0.69702381 0.69325397 0.6931746 ] [0.69412185 0.69315453 0.6931479 0.69314748] hasil penyelesaian : 0.69315
Sekian terimakasih :)